  /**
     * 
     给定一个数组，将数组中的元素向右移动 k 个位置，其中 k 是非负数。

进阶：
尽可能想出更多的解决方案，至少有三种不同的方法可以解决这个问题。
你可以使用空间复杂度为 O(1) 的 原地 算法解决这个问题吗？
     
     
     这个方法基于这个事实：当我们旋转数组 k 次， k%n 个尾部元素会被移动到头部，剩下的元素会被向后移动。
     * 链接：https://leetcode-cn.com/problems/rotate-array
     * @param nums
     * @param k
     */

    /**
    1.全部反转
    2.反转0, k%n-1
    3，反转 k%n ,length-1
    
     */
    public void rotate(int[] nums,int k){
        int len =nums.length;
        k %= length;

        reverse(nums,0,len-1);
        reverse(nums,0,k-1);
        reverse(nums,k,len-1);
    }

    private reverse (int [] nums,int start ,int end){

        while( start < end ){
            int temp= nums[start];
            nums[start]= nums[end];
            nums[end]= int tmp;

            start++;
            end--;
        }

    }